home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3 (Developer)…68k, x86, SPARC, PA-RISC] / NeXTSTEP 3.3 Dev Intel.iso / NextDeveloper / Headers / mach / i386 / thread_status.h < prev    next >
Text File  |  1995-02-14  |  2KB  |  98 lines

  1. /*
  2.  * Copyright (c) 1992 NeXT Computer, Inc.
  3.  *
  4.  * Intel386 Family:    External thread state.
  5.  *
  6.  * HISTORY
  7.  *
  8.  * 5 April 1992 David E. Bohman at NeXT
  9.  *    Created.
  10.  */
  11.  
  12. #import <architecture/i386/frame.h>
  13. #import <architecture/i386/fpu.h>
  14.  
  15. /*
  16.  * Main thread state consists of
  17.  * general registers, segment registers,
  18.  * eip and eflags.
  19.  */
  20.  
  21. #define i386_THREAD_STATE    -1
  22.  
  23. typedef struct {
  24.     unsigned int    eax;
  25.     unsigned int    ebx;
  26.     unsigned int    ecx;
  27.     unsigned int    edx;
  28.     unsigned int    edi;
  29.     unsigned int    esi;
  30.     unsigned int    ebp;
  31.     unsigned int    esp;
  32.     unsigned int    ss;
  33.     unsigned int    eflags;
  34.     unsigned int    eip;
  35.     unsigned int    cs;
  36.     unsigned int    ds;
  37.     unsigned int    es;
  38.     unsigned int    fs;
  39.     unsigned int    gs;
  40. } i386_thread_state_t;
  41.  
  42. #define i386_THREAD_STATE_COUNT        \
  43.     ( sizeof (i386_thread_state_t) / sizeof (int) )
  44.  
  45. /*
  46.  * Default segment register values.
  47.  */
  48.     
  49. #define USER_CODE_SELECTOR    0x000f
  50. #define USER_DATA_SELECTOR    0x0017
  51. #define KERN_CODE_SELECTOR    0x0008
  52. #define KERN_DATA_SELECTOR    0x0010
  53.  
  54. /*
  55.  * Thread floating point state
  56.  * includes FPU environment as
  57.  * well as the register stack.
  58.  */
  59.  
  60. #define i386_THREAD_FPSTATE    -2
  61.  
  62. typedef struct {
  63.     fp_env_t        environ;
  64.     fp_stack_t        stack;
  65. } i386_thread_fpstate_t;
  66.  
  67. #define i386_THREAD_FPSTATE_COUNT     \
  68.     ( sizeof (i386_thread_fpstate_t) / sizeof (int) )
  69.  
  70. /*
  71.  * Extra state that may be
  72.  * useful to exception handlers.
  73.  */
  74.  
  75. #define i386_THREAD_EXCEPTSTATE    -3
  76.  
  77. typedef struct {
  78.     unsigned int    trapno;
  79.     err_code_t        err;
  80. } i386_thread_exceptstate_t;
  81.  
  82. #define i386_THREAD_EXCEPTSTATE_COUNT    \
  83.     ( sizeof (i386_thread_exceptstate_t) / sizeof (int) )
  84.  
  85. /*
  86.  * Per-thread variable used
  87.  * to store 'self' id for cthreads.
  88.  */
  89.  
  90. #define i386_THREAD_CTHREADSTATE    -4
  91.  
  92. typedef struct {
  93.     unsigned int    self;
  94. } i386_thread_cthreadstate_t;
  95.  
  96. #define i386_THREAD_CTHREADSTATE_COUNT    \
  97.     ( sizeof (i386_thread_cthreadstate_t) / sizeof (int) )
  98.